//
// This file is part of cpp-lib, a library of C++ functions and classes.
// Cpp-lib is copyright (C) 2004 and onwards, The CPL Interest Group.
// 
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation; either version 2.1 of the License, or (at
// your option) any later version.
// 
// This library is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
// General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public License
// along with this library (see the file COPYING); if not, write to the
// Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
// 02111-1307  USA
//
// $Id$
//

#include <iostream>

#include "cpp-lib/registry.h"
#include "cpp-lib/interpolation.h"
#include "cpp-lib/util.h"


using namespace cpl::util ;
using namespace cpl::math ;


int main() {

  try {

  lexer lex( std::cin , "stdin" ) ;
  parser p( lex , comma_optional ) ;

  boost::any a ;

  p.parse_expression( a ) ;

  std::vector< boost::any > const& va = 
    convert< std::vector< boost::any > >( a ) ;

  table< double > t ;

  convert( va , t ) ;

  std::cout << t.dimension() << "-dimensional table, sizes:\n" ;
  std::copy( 
    t.size().begin() , 
    t.size().end  () ,
    std::ostream_iterator< std::size_t >( std::cout , " " ) 
  ) ;

  std::cout << '\n' ;


  } catch( std::exception const& e ) 
  { die( e.what() ) ; }

}
